#include <iostream>

using namespace std;
//C++面向对象的三大特性：封装，继承，多态
//C++认为万事万物都皆为对象，对象上有其属性和行为

//封装是C++面向对象三大特性之一
//封装的意义:
//1、将属性和行为作为一个整体，表现生活中的事物
//在设计类的时候，属性和行为写在一起，表现事物
//语法：class 类名{访问权限：属性/行为 }
//2、将属性和行为加以权限控制

//类中的属性与行为统一称为成员
//属性 成员属性 成员变量
//行为 成员函数 成员行为

//设计一个圆类，求圆的周长
//class代表设计一个类，类后面紧跟着的就是类名称
const double PI = 3.1415926;

class Circle {
//访问权限
public://公共权限
    //属性
    int r;//圆的半径

    //行为
    double calculate() {//获取圆的周长
        return 2 * PI * r;
    }
};

//设计一个学生类，属性有姓名和学号
//可以给姓名和学号赋值，可以显示学生的姓名和学号
class Student {
public://公共权限
    //属性
    string name;//姓名
    long long id;//学号

    //行为
    void show() {//显示姓名和学号
        cout << "学生的姓名为:" << name << ",学号为:" << id << endl;
    }

    void setStudent(string name, long long id) {
        this->name = name;
        this->id = id;
    }
};

int main() {
    //通过类创建具体的圆
    //实例化:通过一个类 创建一个对象的过程
    Circle circle;
    //给圆的属性进行赋值
    circle.r = 10;
    cout << "半径为" << circle.r << "圆的周长为:" << circle.calculate() << endl;
    //实例化对象
    Student student1;
    //给student对象进行赋值操作
    student1.name = "张三";
    student1.id = 20230123;
    //显示学生信息
    student1.show();

    Student student2;
    student2.setStudent("李思", 20230456);
    student2.show();
    return 0;
}
